package com.xc.hotelmgr.consumermq.service.mq;

import com.alibaba.fastjson.JSONObject;
import com.xc.hotelmgr.consumermq.pojo.mq.*;
import com.xc.hotelmgr.consumermq.pojo.mybatis.HtHotelinfo;

import java.util.List;

public interface MQService {

    /**
     * 酒店全量推送
     * @param sendAll
     * @param queueName
     */
    void hotelSendAll(SendAll sendAll, String queueName);

    /**
     * 酒店上下架删除
     * @param upDown
     * @param queueName
     */
    void hotelUpDown(UpDown upDown, String queueName);

    /**
     * 酒店信息变更
     * @param hotelCallBack
     * @param queueName
     */
    void hotelCallBack(HotelCallBack hotelCallBack, String queueName);

    /**
     * 待开发
     */
    void roomCallBack();

    /**
     * 酒店价格政策变更
     * @param rpCallBack
     * @param queueName
     */
    void rpCallBack(RpCallBack rpCallBack, String queueName);

    /**
     * 价格库存变更
     * @param ratesCallBack
     * @param queueName
     */
    void ratesCallBack(RatesCallBack ratesCallBack, String queueName);

    /**
     * 酒店拉取
     * @param taskHotelList
     */
    void pullHotel(TaskHotelList taskHotelList) throws InterruptedException;

    /**
     * 携程 全量或分组酒店拉取
     * @param taskHotelList
     */
    void ctripSendAll(TaskHotelList taskHotelList) throws InterruptedException;

    /**
     * 放入酒店拉取队列
     * @param taskHotelList
     */
    void moveHtId(TaskHotelList taskHotelList) throws InterruptedException;

    /**
     * 价格政策删除（指定分组价格政策）
     * @param delRpMQ
     * @return
     */
    boolean rpDel(DelRpMQ delRpMQ, String queueName);

    void citySendAll(TaskHotelList TaskHotelList);


    void  upHtId(JSONObject jsonObject);

    /**
     *           //1、查询酒店所属店铺信息及酒店下历史rp信息
     *             //2、删除数据（酒店、房型、rp、rps)
     *             //3、拉取（酒店、房型、rp、rps)
     *             //4、删除redis(无效rp所属的店铺、酒店、房型信息)
     *             //5、计算失效出失效的rp，将店铺信息、酒店信息、失效rp信息发送到call_back消息队列
     * @param htHotelinfo
     */
    void dealAndSend(HtHotelinfo htHotelinfo);
}
